<?php

class MaterialesController extends Zend_Controller_Action
{

    protected $_materiales = null;

    public function init()
    {
        /* Initialize action controller here */
        $this->view->baseUrl = $this->_request->getBaseUrl();
        $this->view->cliente = Zend_Auth::getInstance()->getIdentity();
        $this->_materiales = new Application_Model_DbTable_Materiales();
    }

    public function indexAction()
    {
        $this->view->titulo = "Materiales";
        $this->view->materiales = $this->_materiales->obtenerTodo();
    }

    public function cargarAction()
    {
        $this->view->titulo = "Materiales";
        $form = new Application_Form_Material();
        if( $this->getRequest()->isPost() ){
            
            if( $form->isValid( $this->_getAllParams() ) ) {
                $nombre =  $form->getValue('material');
                if ($this->_materiales->existe_material($nombre))
                {
                    $elemento = $form->getElement('material');
                    $elemento->addError('Este archivo ya existe!!');
                } 
                elseif ($form->material->receive())
                { 
                    $descripcion = $form->getValue('descripcion');
                    $path = $form->material->getFileName();
                    $creador = Zend_Auth::getInstance()->getIdentity()->usuario;
                    $clave = $form->getValue('clave');

                    $this->_materiales->cargarMaterial($nombre, $descripcion, $path, $creador,$clave);

                    $this->_redirect('/materiales', array('method','get')); 
                }
            }      
            $this->view->form = $form;    
        }elseif( $this->getRequest()->isGet() ){
            $this->view->form = $form;
        }
    }

    public function descargarAction()
    {
        $archivo = $this->_getParam('archivo');
        $this->_materiales->contarDescargas($archivo);
        $upload = Zend_Registry::get('upload_paths');
        $path_a_tu_doc = $upload->paths->upload->files->materiales;
        $enlace = $path_a_tu_doc."/".$archivo;
        header ("Content-Disposition: attachment; filename=".$archivo." ");
        header ("Content-Type: application/octet-stream");
        header ("Content-Length: ".filesize($enlace));
        readfile($enlace);
    }

    public function borrarAction()
    {
        $archivo = $this->_getParam('archivo');
        $this->_materiales->borrarMaterial($archivo);
        $this->_redirect('/materiales', array('method','get')); 
    }

    public function editarAction()
    {
        $archivo = $this->_getParam('archivo');
        
        $form = new Application_Form_EditarMaterial();
        $form->setAction('/materiales/editar/archivo/'.$archivo);
        $form->setMethod('post');
        
        if( $this->getRequest()->isPost() ){
            
            if( $form->isValid( $this->_getAllParams() ) ) {
                
                $descripcion = $form->getValue('descripcion');
                $creador = Zend_Auth::getInstance()->getIdentity()->usuario;
                $clave = $form->getValue('clave');

                $this->_materiales->editarMaterial($archivo,$descripcion,$creador,$clave);

                $this->_redirect('/materiales', array('method','get')); 
            }      
            $this->view->form = $form;    
        }elseif( $this->getRequest()->isGet() ){
            $mat = $this->_materiales->obtener_material($archivo);
            $form->inicializar($mat);
            $this->view->form = $form;
        }
    }


}









